﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using dao.daos;
using negocio.entidades;
using System.Data;

namespace negocio.servicios
{
    public class ProfesorService
    {
        private ProfesorDao dao = new ProfesorDao();

        public DataTable ObtenerTodo()
        {
            DataTable dt = new DataTable();
            dt.Load(dao.ObtenerTodo());
            return dt;
        }

        public Profesor ObtenerPorId(int id)
        {
            return LeerDataReader(dao.ObtenerPorId(id));
        }

        public DataTable ObtenerPorIdDT(int id)
        {
            return dao.ObtenerPorId(id);
        }

        private Profesor LeerDataReader(DataTable table)
        {
            var fila = table.Rows[0];
            Profesor bus = new Profesor();
            bus.Id = Convert.ToInt32(fila["id_profesor"]);
            bus.TipoDoc = Convert.ToInt32(fila["id_tipo_doc"]);
            bus.Nombre = Convert.ToString(fila["nombre"]);
            bus.Apellido = Convert.ToString(fila["apellido"]);
            bus.Email = Convert.ToString(fila["email"]);
            bus.Telefono = Convert.ToString(fila["telefono"]);
            bus.Direccion = Convert.ToString(fila["direccion"]);
            return bus;
        }

        private string GenerarStringValores(Profesor n)
        {
            string valores =
                string.Format(
                    "id_tipo_doc ={1}, nombre ='{2}', apellido ='{3}', direccion ='{4}', email ='{5}', telefono ={6}",
                    n.Id.ToString(),
                    n.TipoDoc.ToString(),
                    n.Nombre.ToString(),
                    n.Apellido.ToString(),
                    n.Direccion.ToString(),
                    n.Email.ToString(),
                    n.Telefono.ToString());

            return valores;
        }
        private String[] GenerarStringValoresArray(Profesor p)
        {
            String[] vect = new string[7];

            vect[0] = p.Id.ToString();
            vect[1] = p.TipoDoc.ToString();
            vect[2] = p.Nombre.ToString();
            vect[3] = p.Apellido.ToString();
            vect[4] = p.Direccion.ToString();
            vect[5] = p.Email.ToString();
            vect[6] = p.Telefono.ToString();


            return vect;
        }

        public bool Insertar(Profesor p)
        {
            bool exito = false;

            string[] val = GenerarStringValoresArray(p);
            string query = "SET DATEFORMAT dmy; INSERT INTO profesores (id_tipo_doc, nombre, apellido, direccion, email, telefono) VALUES (" +  val[1] + ", '" + val[2] + "', '" + val[3] + "', '" + val[4] + "', '" + val[5] + "', " + val[6] + ")";

            dao.Insertar(query);
            exito = true;

            return exito;
        }

        public void Modificar(Profesor n)
        {
            string valores = GenerarStringValores(n);
            string restriccion = string.Format("id_profesor = {0}", n.Id);
            string query = "SET DATEFORMAT dmy; UPDATE profesores SET " + valores + " WHERE " + restriccion;
            dao.Modificar(query);
        }

        public void Eliminar(int id)
        {
            dao.Eliminar(id);
        }

        public DataTable obtenerTiposDoc()
        {
            return dao.obtenerTiposDoc();
        }

    }
}
